<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>应对故障 | Elasticsearch: 权威指南 | Elastic</title>
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
</head>
<body>
<div class="main-container">
    <section id="content">
        
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原文地址: <a href="https://www.elastic.co/guide/cn/elasticsearch/guide/current/_coping_with_failure.html" rel="nofollow">https://www.elastic.co/guide/cn/elasticsearch/guide/current/_coping_with_failure.html</a>, 版权归 www.elastic.co 所有<br/>
                            英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/guide/current/_coping_with_failure.html" rel="nofollow">https://www.elastic.co/guide/en/elasticsearch/guide/current/_coping_with_failure.html</a>
                            </div>
                        <!-- start body -->
                  <div class="page_header">
<b>请注意:</b><br>本书基于 Elasticsearch 2.x 版本，有些内容可能已经过时。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch: 权威指南</a></span>
»
<span class="breadcrumb-link"><a href="getting-started.html">基础入门</a></span>
»
<span class="breadcrumb-link"><a href="distributed-cluster.html">分布式集群</a></span>
»
<span class="breadcrumb-node">应对故障</span>
</div>
<div class="navheader">
<span class="prev">
<a href="_scale_horizontally.html">« 水平扩容</a>
</span>
<span class="next">
<a href="data-in-data-out.html">数据输入和输出 »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="_coping_with_failure"></a>应对故障<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elasticsearch-cn/elasticsearch-definitive-guide/edit/cn/020_Distributed_Cluster/35_Coping_with_failure.asciidoc">edit</a>
</h2>
</div></div></div>
<p>我们之前说过 Elasticsearch 可以应对节点故障，接下来让我们尝试下这个功能。

如果我们关闭第一个节点，这时集群的状态为<a class="xref" href="_coping_with_failure.html#cluster-post-kill" title="关闭了一个节点后的集群">图 6, “关闭了一个节点后的集群”</a></p>
<div id="cluster-post-kill" class="imageblock">
<div class="content">
<img src="../images/elas_0206.png" alt="关闭了一个节点后的集群">
</div>
<div class="title">图 6. 关闭了一个节点后的集群</div>
</div>
<p>我们关闭的节点是一个主节点。而集群必须拥有一个主节点来保证正常工作，所以发生的第一件事情就是选举一个新的主节点： <code class="word">Node 2</code> 。</p>
<p>在我们关闭 <code class="word">Node 1</code> 的同时也失去了主分片 <code class="word">1</code> 和 <code class="word">2</code> ，并且在缺失主分片的时候索引也不能正常工作。

如果此时来检查集群的状况，我们看到的状态将会为 <code class="literal">red</code> ：不是所有主分片都在正常工作。</p>

<p>幸运的是，在其它节点上存在着这两个主分片的完整副本，
所以新的主节点立即将这些分片在 <code class="word">Node 2</code> 和 <code class="word">Node 3</code> 上对应的副本分片提升为主分片，
此时集群的状态将会为 <code class="literal">yellow</code> 。
这个提升主分片的过程是瞬间发生的，如同按下一个开关一般。</p>

<p>为什么我们集群状态是 <code class="literal">yellow</code> 而不是 <code class="literal">green</code> 呢？
虽然我们拥有所有的三个主分片，但是同时设置了每个主分片需要对应2份副本分片，而此时只存在一份副本分片。
所以集群不能为 <code class="literal">green</code> 的状态，不过我们不必过于担心：如果我们同样关闭了 <code class="word">Node 2</code> ，我们的程序 <em>依然</em> 可以保持在不丢任何数据的情况下运行，因为 <code class="word">Node 3</code> 为每一个分片都保留着一份副本。</p>

<p>如果我们重新启动 <code class="word">Node 1</code> ，集群可以将缺失的副本分片再次进行分配，那么集群的状态也将如<a class="xref" href="_scale_horizontally.html#cluster-three-nodes-two-replicas" title="将参数 number_of_replicas 调大到 2">图 5, “将参数 <code class="literal">number_of_replicas</code> 调大到 2”</a>所示。
如果 <code class="word">Node 1</code> 依然拥有着之前的分片，它将尝试去重用它们，同时仅从主分片复制发生了修改的数据文件。</p>

<p>到目前为止，你应该对分片如何使得 Elasticsearch 进行水平扩容以及数据保障等知识有了一定了解。
接下来我们将讲述关于分片生命周期的更多细节。</p>
</div>
<div class="navfooter">
<span class="prev">
<a href="_scale_horizontally.html">« 水平扩容</a>
</span>
<span class="next">
<a href="data-in-data-out.html">数据输入和输出 »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>